package cn.virens.database.common;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import cn.virens.components.page.PageParamUser;
import cn.virens.components.page.PageResult;

/**
 * 通用的service接口
 * 
 * @author     virens
 * @param  <T> 实体类型
 */
public interface BaseViewService<T extends BaseModel> {

	/**
	 * 查询全部数据
	 * 
	 * @param  param 查询参数
	 * @return       List
	 */
	List<? extends T> selectAll(Map<String, Object> param);

	/**
	 * 根据ID查询一条数据
	 * 
	 * @param  id 主键ID
	 * @return    T
	 */
	T selectOne(Serializable id);

	/**
	 * 根据条件查询一条数据
	 * 
	 * @param  param 查询参数
	 * @return       T
	 */
	T selectOne(Map<String, Object> param);

	/**
	 * 根据 分页信息查询列表
	 * 
	 * @param  pageParam 查询参数
	 * @return           PageResult
	 */
	PageResult<?> selectPage(PageParamUser pageParam);

}
